package org.blogwu.learn.面试题;

import cn.hutool.core.collection.CollUtil;

import java.util.List;

/**
 * 王大吉是个可怜的孩子，每逢周末遇上“赶集”，他都必须陪女朋友逛街。
 * 请你帮他算一下，他今年有几个周末双休？
 * 说明：
 * （1）周末是指：周六、周日两天。
 * （2）尾数是“2、5、8”的日期是赶集的日子。比如，1 月 12 日、3 月 28 日、9 月 25 日等。
 * （3）已知：2023 年 1 月 1 日是星期日。
 *
 * @author 远山(胡元富)
 * @date  2023-01-31
 **/
public class Main1 {

    // 月份
    private static List<String> big = CollUtil.newArrayList("1","3","5","7","8","10","12");
    private static List<String> small = CollUtil.newArrayList("2","4","6","9","11");


    // 双休总次数
    private static int sxTotal = 0;

    public static void main(String[] args) {
        // 二月、7月、8月特殊

        int start  = 7;
        // 判断是不是双休
        boolean sx = false;
        // 遍历月
        for (int i=1; i<=12; i++){
            // 计算本月有多少天
            int dayNums=big.contains(i+"")?31:30;
            // 二月特殊处理
            if( i == 2){
                dayNums = 28;
            }

            // 遍历每一天
            for (int day = 1; day<=dayNums; day++){
                // 判断计算周日
                if(start == 6 || start == 7){
                    System.out.println("mouth:"+i+";day:"+day+"; 星期"+start);
                    // 计算赶集   尾数是“2、5、8”的日期是赶集的日子。
                    int s = day%10;
                    if(s == 2 || s== 5 || s== 8){
                        sx = false;
                    }
                }
                // 一周计算最后重置
                if(start == 7){
                    if(sx){
                        sxTotal ++;
                        System.out.println(day+"双休拉");
                    }
                    sx = true;
                    start = 0;
                }
                start++;
            }
        }
        System.out.println("双休天数："+sxTotal);
    }
}
